from database.config import db

# 创建存储关联关系的表（app 与 device 表是多对多关系）
app_device = db.Table(
    'app_device',
    # 设置外键，绑定app表中的主键
    db.Column('app_id',db.Integer,db.ForeignKey('app.id'),primary_key=True),
    # 设置外键，绑定device表中的主键
    db.Column('device_id',db.Integer,db.ForeignKey('device.id'),primary_key=True)
)

# 创建表模型类对象
class App(db.Model):
    __tablename__='app'
    id = db.Column(db.Integer, primary_key = True,autoincrement = True)	# 定义id字段
    name = db.Column(db.String(50),nullable = False)	                # 定义应用名称字段
    package_name = db.Column(db.String(200),nullable = False)	        # 定义应用包名字段
    # 通过relationship方法与device表建立起关系
    # App表的实例对象，可以通过devices属性，查找到device表中外键绑定了自身id的多条关联记录
    # 同理可得：device表的实例对象，可以通过apps属性，查找到app表中外键绑定了自身id的多条关联记录
    # 最后，可以通过每条关联记录内绑定的另一张表的外键,获取到对应表中指定的信息
    devices = db.relationship('Device',secondary=app_device,backref=db.backref('apps'))
